package com.qianli.cashmama.trade.integration.notification.message;

import com.qianli.cashmama.trade.integration.notification.message.dto.BillNoteMsgDto;
import com.qianli.cashmama.trade.integration.notification.message.dto.RepaymentMsgDto;
import com.qianli.cashmama.trade.vo.LoanAgainNotificationUserVO;

/**
 * Created with IntelliJ IDEA.
 * User: sm
 * Date: 2017/8/8
 * Time: 下午3:55
 */
public interface MessageIntegrationService {

    /**
     * 放款成功短信
     *
     * @param userCode
     * @param tradeNo
     * @param mobile
     * @param bankNo
     * @param userName
     * @param nbfcName
     * @param borrowTotalCapital
     * @return
     */
    boolean loanSuccessNote(String userCode, String tradeNo, String mobile, String bankNo, String userName, String nbfcName, String borrowTotalCapital);

    /**
     * 放款失败触发重绑卡短信
     *
     * @param userCode
     * @param tradeNo
     * @param mobile
     * @param bankNo
     * @param userName
     * @return
     */
    boolean loanFailAndRebindNote(String userCode, String tradeNo, String mobile, String bankNo, String userName);

    /**
     * 到期提醒
     *
     * @param billNoteMsgDto
     * @return
     */
    boolean sendBillNote(BillNoteMsgDto billNoteMsgDto);

    /**
     * 还款完成短信通知
     *
     * @param repaymentMsgDto
     * @param userCode
     * @param tradeNo
     * @return
     */
    boolean sendRepaymentNote(RepaymentMsgDto repaymentMsgDto, String userCode, String tradeNo);

    /**
     * 发送邮件
     */
    boolean loanNoteByEmail(String userCode, String tradeNo, String content, String title);

    /**
     * 发送再次借款通知消息
     *
     * @param loanAgainNotificationUserVO
     */
    boolean sendLoanAgainNotification(LoanAgainNotificationUserVO loanAgainNotificationUserVO);

    /**
     * 签约超时订单关闭通知用户
     *
     * @param userCode
     * @param tradeNo
     * @param name
     * @param mobile
     * @return
     */
    boolean sendSignTimeoutMessage(String userCode, String tradeNo, String name, String mobile);

    /**
     * 信审通过发送消息
     *
     * @param tradeNo
     * @param userCode
     * @param mobile
     * @param name
     * @param borrowCapital
     * @return
     */
    void sendMessageAfterAuditPass(String tradeNo, String userCode, String mobile, String name, String borrowCapital);

    /**
     * 信审拒绝发送消息
     *
     * @param tradeNo
     * @param userCode
     * @param mobile
     * @param name
     * @param borrowCapital
     */
    void sendMessageAfterAuditRefuse(String tradeNo, String userCode, String mobile, String name, String borrowCapital);

    /**
     * 需要用户操作highmark发送消息
     *
     * @param tradeNo
     * @param userCode
     * @param mobile
     * @param name
     * @param borrowCapital
     */
    void sendMessageAfterNeedHighmark(String tradeNo, String userCode, String mobile, String name, String borrowCapital);

    /**
     * 需要用户操作highmark发送消息
     *
     * @param tradeNo
     * @param userCode
     * @param mobile
     * @param name
     * @param borrowCapital
     */
    void sendMessageAfterNeedWithdraw(String tradeNo, String userCode, String mobile, String name, String borrowCapital);

    /**
     * appsflyer埋点
     *
     * @param packageName
     * @param userCode
     * @param eventName
     * @param eventValue
     */
    void sendAppsflyerDataPush(String packageName, String appsflyerId, String userCode, String eventName, String eventValue);
}
